package pl.edu.mimuw.mas.visualization;

import pl.edu.mimuw.mas.bezier.ControlPoints;
import pl.edu.mimuw.mas.chart.Chart;
import pl.edu.mimuw.mas.exception.WrongAreaException;
import pl.edu.mimuw.mas.visualization.rendering.ChartRendererContext;
import pl.edu.mimuw.mas.visualization.rendering.ChartRendererContext.contextType;

/**
 * Rozszerzenie podstawowych możliwości wizualizacji pod kątem edytora.
 */
public class ChartEditorBaseVisualization extends AbstractVisualization {
	
	public ChartEditorBaseVisualization(Chart chart) {
		super(chart);
	}
	
	protected contextType getType() {
		return contextType.EDITOR;
	}

    /**
     * Tworzy nowy kontekst wyświetlający siatkę  kontrolną.
     *  
     * @return deskryptor kontekstu
     * @throws WrongAreaException niepoprawny opis obszaru
     */
    public int createContext(ControlPoints cp) throws WrongAreaException {
    	int id = createContext(cp.getArea());
    	
    	ChartRendererContext cn = localContext.get(id);
    	cn.setControlPoints(cp);
    	cn.select(cp.getArea());
    	    	
    	return id;    		
    }
    
    /**
	 * Tworzy nowy kontekst i odrazu zastępuje nim aktualny kontekst również w
	 * {@link ChartRenderer}.
	 * 
	 * @throws WrongAreaException niepoprawny opis obszaru
	 */
    public void replaceContext(ControlPoints cp) throws WrongAreaException {
    	replaceContext(cp.getArea());
    	
       	currentContext.setControlPoints(cp);
       	currentContext.select(cp.getArea());
    }
}
